home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / print / PSStreamPrintService.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  8.9 KB  |  359 lines

  1. package sun.print;
  2.  
  3. import java.io.OutputStream;
  4. import java.util.Locale;
  5. import javax.print.DocFlavor;
  6. import javax.print.DocPrintJob;
  7. import javax.print.ServiceUIFactory;
  8. import javax.print.StreamPrintService;
  9. import javax.print.DocFlavor.SERVICE_FORMATTED;
  10. import javax.print.attribute.Attribute;
  11. import javax.print.attribute.AttributeSet;
  12. import javax.print.attribute.AttributeSetUtilities;
  13. import javax.print.attribute.HashAttributeSet;
  14. import javax.print.attribute.HashPrintServiceAttributeSet;
  15. import javax.print.attribute.PrintServiceAttribute;
  16. import javax.print.attribute.PrintServiceAttributeSet;
  17. import javax.print.attribute.standard.Chromaticity;
  18. import javax.print.attribute.standard.ColorSupported;
  19. import javax.print.attribute.standard.Copies;
  20. import javax.print.attribute.standard.CopiesSupported;
  21. import javax.print.attribute.standard.Fidelity;
  22. import javax.print.attribute.standard.JobName;
  23. import javax.print.attribute.standard.Media;
  24. import javax.print.attribute.standard.MediaPrintableArea;
  25. import javax.print.attribute.standard.MediaSize;
  26. import javax.print.attribute.standard.MediaSizeName;
  27. import javax.print.attribute.standard.OrientationRequested;
  28. import javax.print.attribute.standard.PageRanges;
  29. import javax.print.attribute.standard.RequestingUserName;
  30. import javax.print.attribute.standard.SheetCollate;
  31. import javax.print.attribute.standard.Sides;
  32. import javax.print.attribute.standard.MediaSize.ISO;
  33. import javax.print.attribute.standard.MediaSize.NA;
  34. import javax.print.event.PrintServiceAttributeListener;
  35.  
  36. public class PSStreamPrintService extends StreamPrintService implements SunPrinterJobService {
  37.    private static final Class[] suppAttrCats = new Class[]{Chromaticity.class, Copies.class, Fidelity.class, JobName.class, Media.class, MediaPrintableArea.class, OrientationRequested.class, PageRanges.class, RequestingUserName.class, SheetCollate.class, Sides.class};
  38.    private static int MAXCOPIES = 1000;
  39.    private static final MediaSizeName[] mediaSizes;
  40.  
  41.    public PSStreamPrintService(OutputStream var1) {
  42.       super(var1);
  43.    }
  44.  
  45.    public String getOutputFormat() {
  46.       return "application/postscript";
  47.    }
  48.  
  49.    public DocFlavor[] getSupportedDocFlavors() {
  50.       return PSStreamPrinterFactory.getFlavors();
  51.    }
  52.  
  53.    public DocPrintJob createPrintJob() {
  54.       return new PSStreamPrintJob(this);
  55.    }
  56.  
  57.    public boolean usesClass(Class var1) {
  58.       return var1 == PSPrinterJob.class;
  59.    }
  60.  
  61.    public String getName() {
  62.       return "Postscript output";
  63.    }
  64.  
  65.    public void addPrintServiceAttributeListener(PrintServiceAttributeListener var1) {
  66.    }
  67.  
  68.    public void removePrintServiceAttributeListener(PrintServiceAttributeListener var1) {
  69.    }
  70.  
  71.    public <T extends PrintServiceAttribute> T getAttribute(Class<T> var1) {
  72.       if (var1 == null) {
  73.          throw new NullPointerException("category");
  74.       } else if (!PrintServiceAttribute.class.isAssignableFrom(var1)) {
  75.          throw new IllegalArgumentException("Not a PrintServiceAttribute");
  76.       } else {
  77.          return (T)(var1 == ColorSupported.class ? ColorSupported.SUPPORTED : null);
  78.       }
  79.    }
  80.  
  81.    public PrintServiceAttributeSet getAttributes() {
  82.       HashPrintServiceAttributeSet var1 = new HashPrintServiceAttributeSet();
  83.       var1.add(ColorSupported.SUPPORTED);
  84.       return AttributeSetUtilities.unmodifiableView(var1);
  85.    }
  86.  
  87.    public boolean isDocFlavorSupported(DocFlavor var1) {
  88.       DocFlavor[] var2 = this.getSupportedDocFlavors();
  89.  
  90.       for(int var3 = 0; var3 < var2.length; ++var3) {
  91.          if (var1.equals(var2[var3])) {
  92.             return true;
  93.          }
  94.       }
  95.  
  96.       return false;
  97.    }
  98.  
  99.    public Class<?>[] getSupportedAttributeCategories() {
  100.       Class[] var1 = new Class[suppAttrCats.length];
  101.       System.arraycopy(suppAttrCats, 0, var1, 0, var1.length);
  102.       return var1;
  103.    }
  104.  
  105.    public boolean isAttributeCategorySupported(Class<? extends Attribute> var1) {
  106.       if (var1 == null) {
  107.          throw new NullPointerException("null category");
  108.       } else if (!Attribute.class.isAssignableFrom(var1)) {
  109.          throw new IllegalArgumentException(var1 + " is not an Attribute");
  110.       } else {
  111.          for(int var2 = 0; var2 < suppAttrCats.length; ++var2) {
  112.             if (var1 == suppAttrCats[var2]) {
  113.                return true;
  114.             }
  115.          }
  116.  
  117.          return false;
  118.       }
  119.    }
  120.  
  121.    public Object getDefaultAttributeValue(Class<? extends Attribute> var1) {
  122.       if (var1 == null) {
  123.          throw new NullPointerException("null category");
  124.       } else if (!Attribute.class.isAssignableFrom(var1)) {
  125.          throw new IllegalArgumentException(var1 + " is not an Attribute");
  126.       } else if (!this.isAttributeCategorySupported(var1)) {
  127.          return null;
  128.       } else if (var1 == Copies.class) {
  129.          return new Copies(1);
  130.       } else if (var1 == Chromaticity.class) {
  131.          return Chromaticity.COLOR;
  132.       } else if (var1 == Fidelity.class) {
  133.          return Fidelity.FIDELITY_FALSE;
  134.       } else if (var1 == Media.class) {
  135.          String var6 = Locale.getDefault().getCountry();
  136.          return var6 == null || !var6.equals("") && !var6.equals(Locale.US.getCountry()) && !var6.equals(Locale.CANADA.getCountry()) ? MediaSizeName.ISO_A4 : MediaSizeName.NA_LETTER;
  137.       } else if (var1 != MediaPrintableArea.class) {
  138.          if (var1 == OrientationRequested.class) {
  139.             return OrientationRequested.PORTRAIT;
  140.          } else if (var1 == PageRanges.class) {
  141.             return new PageRanges(1, Integer.MAX_VALUE);
  142.          } else if (var1 == SheetCollate.class) {
  143.             return SheetCollate.UNCOLLATED;
  144.          } else {
  145.             return var1 == Sides.class ? Sides.ONE_SIDED : null;
  146.          }
  147.       } else {
  148.          String var2 = Locale.getDefault().getCountry();
  149.          float var5 = 0.5F;
  150.          float var3;
  151.          float var4;
  152.          if (var2 == null || !var2.equals("") && !var2.equals(Locale.US.getCountry()) && !var2.equals(Locale.CANADA.getCountry())) {
  153.             var3 = ISO.A4.getX(25400) - 2.0F * var5;
  154.             var4 = ISO.A4.getY(25400) - 2.0F * var5;
  155.          } else {
  156.             var3 = NA.LETTER.getX(25400) - 2.0F * var5;
  157.             var4 = NA.LETTER.getY(25400) - 2.0F * var5;
  158.          }
  159.  
  160.          return new MediaPrintableArea(var5, var5, var3, var4, 25400);
  161.       }
  162.    }
  163.  
  164.    public Object getSupportedAttributeValues(Class<? extends Attribute> var1, DocFlavor var2, AttributeSet var3) {
  165.       if (var1 == null) {
  166.          throw new NullPointerException("null category");
  167.       } else if (!Attribute.class.isAssignableFrom(var1)) {
  168.          throw new IllegalArgumentException(var1 + " does not implement Attribute");
  169.       } else if (var2 != null && !this.isDocFlavorSupported(var2)) {
  170.          throw new IllegalArgumentException(var2 + " is an unsupported flavor");
  171.       } else if (!this.isAttributeCategorySupported(var1)) {
  172.          return null;
  173.       } else if (var1 == Chromaticity.class) {
  174.          Chromaticity[] var17 = new Chromaticity[]{Chromaticity.COLOR};
  175.          return var17;
  176.       } else if (var1 == JobName.class) {
  177.          return new JobName("", (Locale)null);
  178.       } else if (var1 == RequestingUserName.class) {
  179.          return new RequestingUserName("", (Locale)null);
  180.       } else if (var1 == OrientationRequested.class) {
  181.          if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  182.             return null;
  183.          } else {
  184.             OrientationRequested[] var16 = new OrientationRequested[]{OrientationRequested.PORTRAIT, OrientationRequested.LANDSCAPE, OrientationRequested.REVERSE_LANDSCAPE};
  185.             return var16;
  186.          }
  187.       } else if (var1 != Copies.class && var1 != CopiesSupported.class) {
  188.          if (var1 == Media.class) {
  189.             Media[] var15 = new Media[mediaSizes.length];
  190.             System.arraycopy(mediaSizes, 0, var15, 0, mediaSizes.length);
  191.             return var15;
  192.          } else if (var1 == Fidelity.class) {
  193.             Fidelity[] var14 = new Fidelity[]{Fidelity.FIDELITY_FALSE, Fidelity.FIDELITY_TRUE};
  194.             return var14;
  195.          } else if (var1 == MediaPrintableArea.class) {
  196.             if (var3 == null) {
  197.                return null;
  198.             } else {
  199.                MediaSize var13 = (MediaSize)var3.get(MediaSize.class);
  200.                if (var13 == null) {
  201.                   Media var5 = (Media)var3.get(Media.class);
  202.                   if (var5 != null && var5 instanceof MediaSizeName) {
  203.                      MediaSizeName var6 = (MediaSizeName)var5;
  204.                      var13 = MediaSize.getMediaSizeForName(var6);
  205.                   }
  206.                }
  207.  
  208.                if (var13 == null) {
  209.                   return null;
  210.                } else {
  211.                   MediaPrintableArea[] var18 = new MediaPrintableArea[1];
  212.                   float var19 = var13.getX(25400);
  213.                   float var7 = var13.getY(25400);
  214.                   float var8 = 0.5F;
  215.                   float var9 = 0.5F;
  216.                   if (var19 < 5.0F) {
  217.                      var8 = var19 / 10.0F;
  218.                   }
  219.  
  220.                   if (var7 < 5.0F) {
  221.                      var9 = var7 / 10.0F;
  222.                   }
  223.  
  224.                   var18[0] = new MediaPrintableArea(var8, var9, var19 - 2.0F * var8, var7 - 2.0F * var9, 25400);
  225.                   return var18;
  226.                }
  227.             }
  228.          } else if (var1 == PageRanges.class) {
  229.             if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  230.                return null;
  231.             } else {
  232.                PageRanges[] var12 = new PageRanges[]{new PageRanges(1, Integer.MAX_VALUE)};
  233.                return var12;
  234.             }
  235.          } else if (var1 == SheetCollate.class) {
  236.             if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  237.                SheetCollate[] var11 = new SheetCollate[]{SheetCollate.UNCOLLATED};
  238.                return var11;
  239.             } else {
  240.                SheetCollate[] var10 = new SheetCollate[]{SheetCollate.UNCOLLATED, SheetCollate.COLLATED};
  241.                return var10;
  242.             }
  243.          } else if (var1 == Sides.class) {
  244.             if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  245.                return null;
  246.             } else {
  247.                Sides[] var4 = new Sides[]{Sides.ONE_SIDED, Sides.TWO_SIDED_LONG_EDGE, Sides.TWO_SIDED_SHORT_EDGE};
  248.                return var4;
  249.             }
  250.          } else {
  251.             return null;
  252.          }
  253.       } else {
  254.          return new CopiesSupported(1, MAXCOPIES);
  255.       }
  256.    }
  257.  
  258.    private boolean isSupportedCopies(Copies var1) {
  259.       int var2 = var1.getValue();
  260.       return var2 > 0 && var2 < MAXCOPIES;
  261.    }
  262.  
  263.    private boolean isSupportedMedia(MediaSizeName var1) {
  264.       for(int var2 = 0; var2 < mediaSizes.length; ++var2) {
  265.          if (var1.equals(mediaSizes[var2])) {
  266.             return true;
  267.          }
  268.       }
  269.  
  270.       return false;
  271.    }
  272.  
  273.    public boolean isAttributeValueSupported(Attribute var1, DocFlavor var2, AttributeSet var3) {
  274.       if (var1 == null) {
  275.          throw new NullPointerException("null attribute");
  276.       } else if (var2 != null && !this.isDocFlavorSupported(var2)) {
  277.          throw new IllegalArgumentException(var2 + " is an unsupported flavor");
  278.       } else {
  279.          Class var4 = var1.getCategory();
  280.          if (!this.isAttributeCategorySupported(var4)) {
  281.             return false;
  282.          } else if (var1.getCategory() == Chromaticity.class) {
  283.             return var1 == Chromaticity.COLOR;
  284.          } else if (var1.getCategory() == Copies.class) {
  285.             return this.isSupportedCopies((Copies)var1);
  286.          } else if (var1.getCategory() == Media.class && var1 instanceof MediaSizeName) {
  287.             return this.isSupportedMedia((MediaSizeName)var1);
  288.          } else {
  289.             if (var1.getCategory() == OrientationRequested.class) {
  290.                if (var1 == OrientationRequested.REVERSE_PORTRAIT || var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  291.                   return false;
  292.                }
  293.             } else if (var1.getCategory() == PageRanges.class) {
  294.                if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  295.                   return false;
  296.                }
  297.             } else if (var1.getCategory() == SheetCollate.class) {
  298.                if (var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  299.                   return false;
  300.                }
  301.             } else if (var1.getCategory() == Sides.class && var2 != null && !var2.equals(SERVICE_FORMATTED.PAGEABLE) && !var2.equals(SERVICE_FORMATTED.PRINTABLE)) {
  302.                return false;
  303.             }
  304.  
  305.             return true;
  306.          }
  307.       }
  308.    }
  309.  
  310.    public AttributeSet getUnsupportedAttributes(DocFlavor var1, AttributeSet var2) {
  311.       if (var1 != null && !this.isDocFlavorSupported(var1)) {
  312.          throw new IllegalArgumentException("flavor " + var1 + "is not supported");
  313.       } else if (var2 == null) {
  314.          return null;
  315.       } else {
  316.          HashAttributeSet var4 = new HashAttributeSet();
  317.          Attribute[] var5 = var2.toArray();
  318.  
  319.          for(int var6 = 0; var6 < var5.length; ++var6) {
  320.             try {
  321.                Attribute var3 = var5[var6];
  322.                if (!this.isAttributeCategorySupported(var3.getCategory())) {
  323.                   var4.add(var3);
  324.                } else if (!this.isAttributeValueSupported(var3, var1, var2)) {
  325.                   var4.add(var3);
  326.                }
  327.             } catch (ClassCastException var8) {
  328.             }
  329.          }
  330.  
  331.          if (var4.isEmpty()) {
  332.             return null;
  333.          } else {
  334.             return var4;
  335.          }
  336.       }
  337.    }
  338.  
  339.    public ServiceUIFactory getServiceUIFactory() {
  340.       return null;
  341.    }
  342.  
  343.    public String toString() {
  344.       return "PSStreamPrintService: " + this.getName();
  345.    }
  346.  
  347.    public boolean equals(Object var1) {
  348.       return var1 == this || var1 instanceof PSStreamPrintService && ((PSStreamPrintService)var1).getName().equals(this.getName());
  349.    }
  350.  
  351.    public int hashCode() {
  352.       return this.getClass().hashCode() + this.getName().hashCode();
  353.    }
  354.  
  355.    static {
  356.       mediaSizes = new MediaSizeName[]{MediaSizeName.NA_LETTER, MediaSizeName.TABLOID, MediaSizeName.LEDGER, MediaSizeName.NA_LEGAL, MediaSizeName.EXECUTIVE, MediaSizeName.ISO_A3, MediaSizeName.ISO_A4, MediaSizeName.ISO_A5, MediaSizeName.ISO_B4, MediaSizeName.ISO_B5};
  357.    }
  358. }
  359.